package com.ruoyi.baseInfo.mapper;

import com.ruoyi.baseInfo.domain.ClientsInfo;
import com.ruoyi.common.core.domain.entity.SysDept;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ClientsInfoMapper {
    /**
     * 查询企业基本信息列表
     * @param ClientsInfo 查询参数
     * @return 结果
     */
    List<ClientsInfo> getClientList(ClientsInfo ClientsInfo);


    int update(ClientsInfo clientsInfo);


    /**
     * 校验公司名称是否唯一
     *
     * @param companyName 公司名称
     * @param parentId 父部门ID
     * @return 结果
     */
    public ClientsInfo checkCompanyNameUnique(@Param("companyName") String companyName, @Param("parentId") Long parentId);

    /**
     * 根据公司ID查询信息
     *
     * @param companyId 部门ID
     * @return 部门信息
     */
    public  ClientsInfo selectClientById(Long companyId);

    /**
     * 根据ID查询所有子部门
     *
     * @param deptId 部门ID
     * @return 部门列表
     */
    public List<ClientsInfo> selectChildrenById(Long deptId);

    /**
     * 新增公司信息
     *
     * @param clientsinfo 公司信息
     * @return 结果
     */
    public int insertClient(ClientsInfo clientsinfo);

    /**
     * 是否存在子节点
     *
     * @param companyId 部门ID
     * @return 结果
     */
    public int hasChildById(Long companyId);

    /**
     * 删除公司信息
     *
     * @param companyId 公司ID
     * @return 结果
     */
    public int deleteClientById(Long companyId);

    /**
     * 修改公司信息
     *
     * @param  clientsInfo 公司信息
     * @return 结果
     */
    public int updateClient(ClientsInfo clientsInfo);

    /**
     * 根据ID查询所有子公司（正常状态）
     *
     * @param companyId 公司ID
     * @return 子公司数
     */
    public int selectNormalChildrenById(Long companyId);

    /**
     * 修改所在公司状态
     *
     * @param companyIds 公司ID组
     */
    public void updateClientType(Long[] companyIds);

    /**
     * 修改子元素关系
     *
     * @param clients 子元素
     * @return 结果
     */
    public int updateChildren(@Param("clients") List<ClientsInfo> clients);

}
